package com.unism.uniMeterage.meterage.stream;
/**
 * @author liuc
 * 工作节点任务接口
 */
public interface Worker extends Runnable{
    /**
     * 初始化工作节点
     */
    public void init();
    /**
     * 执行工作节点
     */
    public Boolean execute(Message data);
    /**
     * 激活工作节点
     */
    public void activate();
    /**
     * 销毁工作节点
     */
    public void destory();
    /**
     * 获取worker名称，全局唯一
     * @return
     */
    public String getWorkerName();
    /**
     * 获取节点的状态
     * @return
     */
    public AbstractWorker.WorkerStatus currStatus();
    /**
     * 设置节点的状态
     * @return
     */
    public void setStatus(AbstractWorker.WorkerStatus status);
    /**
     * 获取当前worker最大缓存消息的数量
     * @return
     */
    public Integer getMaxMessageCount();
    /**
     * 获取当前缓存消息的数量
     * @return
     */
    public Integer getMessageCount();
    /**
     * 获取待处理的消息
     * @return
     */
    public Message doNext();
    /**
     * 在缓存中添加消息
     * @return
     */
    public Boolean addMessage(Message message);

}
